iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0

一、什麼是 Hash?
• 定義:將一筆資料轉換為一個數值,稱為「雜湊值 (Hash)」。
• 例如:int hash(一筆資料) { return 一個數值; }
• 中文裡有人稱作「哈希」,其作用在資料庫中能讓資料更容易被檢索與查詢;而在密碼學中可作為加密與驗證的工具。雜湊表(Hash Table)是靜態表格(Statis Table)的一種。
• Hashing雜湊法,是將原本的數值經由一些複雜的數學函數,轉換成相對應的值,此數學函數稱為「雜湊函數」。
三個在資料結構中重要的單詞:
• 溢位 (Overflow):目標位置已經有資料。
• 碰撞 (Collision):不同資料計算後得出相同雜湊值。
• 完美雜湊 (Perfect Hashing):沒有溢位與碰撞的情況。

• 範例[假設公式 f(x)=5x+4],當x為87,65,54時所對應的函數值:
> f(87)= 587+4 = 439
> f(65)= 329
> f(54)= 274

二、Hash的廣泛應用
以下為作者分享她參加「資安女婕思」比賽時針對加密方法所提出的想法:
https://ithelp.ithome.com.tw/upload/images/20250930/20169261LM1CjNb1Gx.jpg
圖/如何加密與隨機抽取色塊做雜湊
https://ithelp.ithome.com.tw/upload/images/20250930/20169261QSowwvt8cj.jpg
圖/第二道加密

透過隨機像素色碼產生密碼並搭配雜湊、臉部辨識與多層加密,不僅能避免密碼被竊取或遺忘,也能像區塊鏈保護電子病歷一樣,確保文字與照片等私密資料在儲存過程中具備高度安全性與不可竄改性。

三、Hash重點大整理
• 不能讓任何人從Hash值導出原始資料(單向性)。(例:不能用果汁做出水果)
• 相同輸入必須得到相同輸出,相似輸入不應得到相同 Hash 值。(例:test和Test的Hash值不能一樣)
• 分類:
> 簡單 Hash (Simple Hash):項目數固定。
> 樹狀 Hash (Tree Hash):項目數不固定時使用。
• 常見演算法與長度:
> MD5 → 128位Hash。
> SHA 1 → 160位Hash。
> SHA 256 → 256位Hash,目前常用於比特幣。
> Keccak-256 → 256位Hash,目前被以太坊使用。
安全性比較:SHA系列 > MD5。

四、區塊分成Head & Body
區塊頭部 (Head)會出現:
• 版本號
• 時間戳(Timestamp)
• 難度目標(Difficulty Target)
• 前一個區塊的Hash
• Nonce(執行次數,用於 Proof of Work)
• Merkle Root Hash(由 Merkle Tree 計算的 Hash 值)

區塊身體 (Body)會出現:
• 實際交易資料

Tips:
• 推薦網站:SHA256 Hash Demo

五、參考來源

1.What Is Hashing? [Step-by-Step Guide-Under Hood Of Blockchain]

2.圖解資料結構:使用Java(第三版)

這章節圖解雜湊(Hash)原理,下一章節的主題是:你知道醫療也能與區塊鏈結合嗎?

 第十三天書中的作者語錄是:
 本章內容可能有點小複雜,但一定要記得有些東西不學不會怎樣,但學了會很不一樣!

上一篇
12:區塊鏈加密方式大解密!
下一篇
14:你知道醫療也能與區塊鏈結合嗎?
系列文
從零開始的區塊鏈學習24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言